package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
	"strconv"
	"strings"
)

func converToBin(n int) string {
	result := ""
	if n == 0 {
		result = "0"
	} else {
		// 起始条件，终止条件，递增表达式
		// 省略初始条件
		// 省略初始条件，相当于while
		for ; n > 0; n /= 2 {
			lsb := n % 2                        // 最低位
			result = strconv.Itoa(lsb) + result // strconv.Itoa整数转字符串
		}
	}

	return result
}

func printFile(filename string) {
	file, err := os.Open(filename)
	if err != nil {
		panic(err)
	}

	printFileContents(file)
	//scanner := bufio.NewScanner(file)
	//// 省略初始条件和递增表达式，类似于while循环，go语言中没有while循环
	//for scanner.Scan() {
	//	fmt.Println(scanner.Text())
	//}
}

func printFileContents(reader io.Reader) {
	scanner := bufio.NewScanner(reader)
	for scanner.Scan() {
		fmt.Println(scanner.Text())
	}
}

func forever() {
	// 省略起始条件，终止条件，递增表达式，死循环
	for {
		fmt.Println("abc")
	}
}

func main() {
	//fmt.Println(
	//	converToBin(5), // 101
	//	converToBin(13), // 1101
	//	converToBin(0), // 1101
	//	)
	//forever()
	printFile("basic/loop/abc.txt")
	s := `abc
"asa"
p`
	printFileContents(strings.NewReader(s))
}
